#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <signal.h>

#define MYREALTIME (SIGRTMIN + 6)

//信号处理函数
static void mysig_handler(int s)
{
	write(1, "!",1);
}

int main()
{
	int i;
	sigset_t set, oset, saveset;
	//设置信号行为
	signal(MYREALTIME, mysig_handler);
	//初始化信号集，包含实时信号6
	sigemptyset(&set);
	sigaddset(&set, MYREALTIME);
	//保存最初的信号集，设置实时信号6为通，保存到oset信号集，设置实时信号6为阻
	sigprocmask(SIG_UNBLOCK, &set, &saveset);
	sigprocmask(SIG_BLOCK, &set, &oset);

	while(1)
	{
		//打印5*和\n
		for(i = 0; i < 5; i ++)
		{
			sleep(1);
			write(1, "*", 1);
		}
		write(1, "\n", 1);
		//通， 等， 阻
		sigsuspend(&oset);
	}

	sigprocmask(SIG_SETMASK, &saveset, NULL);
	exit(0);
}
